home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / asmutil / hdsource.zip / HDMAIN.ASM < prev    next >
Assembly Source File  |  1986-04-24  |  33KB  |  928 lines

  1.      PAGE     64,132            ;PAGE WIDTH,LENGTH
  2.      .SALL
  3.      TITLE     PC/AT DISK DIAGNOSTIC PROGRAM
  4. ; **********************************************************************
  5. ; *                                       *
  6. ; *    DECSRIPTION    A MENU DRIVEN HARD DISK DIAGNOSTIC PROGRAM      *
  7. ; *               FOR HARD DISKS ON A IBM PC/AT.               *
  8. ; *                                       *
  9. ; *    INPUTS           MENU INPUT                       *
  10. ; *                                       *
  11. ; *                                       *
  12. ; *    OUTPUTS        CAN DESTROY DATA ON THE HARD DISK           *
  13. ; *                                       *
  14. ; *                                       *
  15. ; **********************************************************************
  16. ;
  17.      PUBLIC  HDMAIN
  18. ;
  19. ; **********************************************************************
  20. ; *             PROGRAMS OR ROUTINES TO BE CALLED               *
  21. ; **********************************************************************
  22.      EXTRN     SCRMGR:NEAR           ;SCREEN MANAGER
  23.      EXTRN     HDRW:NEAR           ;WRITE/READ/VERIFY TEST
  24.      EXTRN     HDSEEK:NEAR           ;SEEK TEST
  25.      EXTRN     HDHS:NEAR           ;HEAD SELECT TEST
  26.      EXTRN     HDECC:NEAR           ;ECC TEST
  27.      EXTRN     HDALL:NEAR           ;RUN ALL TESTS
  28.      EXTRN     HDSURF:NEAR           ;SURFACE ANALYSIS
  29.      EXTRN     HDTFMT:NEAR           ;FORMAT TRACK
  30.      EXTRN     HDFMT:NEAR           ;FORMAT DRIVE
  31.      EXTRN     HDMSG:NEAR           ;MSG DISPLAY AND PRINT
  32.      EXTRN     PRT_MSG:NEAR
  33.      EXTRN     D_ERROR:NEAR
  34.      EXTRN     HDSHIP:NEAR           ;LAND THE HEADS
  35.      EXTRN     HDFSEC:NEAR           ;FLAG A SECTOR
  36.      EXTRN     HDSCAN:NEAR           ;QUICK DEFECT SCAN
  37. ; **********************************************************************
  38. ; *               PUBLIC SUBROUTINES                   *
  39. ; **********************************************************************
  40.      PUBLIC  CONV_ASCII,BOX_IT,BEEP,TRANS_KEY,READ_PARMS
  41.      PUBLIC  EXEC_CMD,DECODE_ERR,NEXT_SEC,NEXT_TRK
  42.      PUBLIC  NEXT_CYL,CTLR_DIAG,HIDE_CUR,WRITE_CMSG
  43. ;
  44.      IF1
  45.      INCLUDE HD.MAC
  46.      INCLUDE \SCRMGR\SCRNWORK.MAC
  47.      ENDIF
  48. ; **********************************************************************
  49. ; *                                       *
  50. ; *                   BEGIN                       *
  51. ; *                                       *
  52. ; **********************************************************************
  53. CSEG     SEGMENT PARA PUBLIC 'CODE'
  54.      ORG     100H
  55.      ASSUME  CS:CSEG
  56. HDMAIN PROC    NEAR
  57.      PUSH     CS               ;ESTABLISH
  58.      POP     DS               ;  DATA
  59.      ASSUME  DS:CSEG           ;    SEGMENT
  60.      LEA     AX,STACK_SSE           ;END OF THE STACK AREA
  61.      MOV     BX,CS               ;INITIALIZE
  62.      MOV     SS,BX               ;  STACK
  63.      MOV     SP,AX               ;    SEGMENT
  64.      JMP     BY_INFO           ;JMP AROUND COPYRIGHT
  65.      ID     HDMAIN
  66. ; **********************************************************************
  67. ; *                 STACK WORK AREA                   *
  68. ; **********************************************************************
  69. STACK_SS DB     512 DUP(0)           ;STACK AREA
  70. STACK_SSE EQU     $               ;END OF THE STACK AREA
  71. ; **********************************************************************
  72. ; *             EXTENDED KEY TABLE                   *
  73. ; **********************************************************************
  74. EX_KEY     LABEL     BYTE
  75.      DB     132 DUP(0FFH)
  76.      ORG     $-132
  77.      ORG     EX_KEY+13
  78.      DB     00               ;ENTER  KEY
  79.      ORG     EX_KEY+27
  80.      DB     41               ;ESCAPE KEY
  81.      ORG     EX_KEY+59
  82.      DB     01,02,03,04,05        ;FUNCTION KEYS 1 TO 5
  83.      DB     06,07,08,09,10        ;FUNCTION KEYS 6 TO 10
  84.      ORG     EX_KEY+73
  85.      DB     43               ;PAGE UP
  86.      ORG     EX_KEY+79
  87.      DB     42               ;END
  88.      ORG     EX_KEY+81
  89.      DB     44               ;PAGE DOWN
  90.      ORG     EX_KEY+84
  91.      DB     11,12,13,14,15        ;FUNCTION KEYS 11 TO 15     SHIFT
  92.      DB     16,17,18,19,20        ;FUNCTION KEYS 16 TO 20     SHIFT
  93.      ORG     EX_KEY+94
  94.      DB     21,22,23,24,25        ;FUNCTION KEYS 21 TO 25     CTRL
  95.      DB     26,27,28,29,30        ;FUNCTION KEYS 26 TO 30     CTRL
  96.      ORG     EX_KEY+104
  97.      DB     31,32,33,34,35        ;FUNCTION KEYS 31 TO 35     ALT
  98.      DB     36,37,38,39,40        ;FUNCTION KEYS 36 TO 40     ALT
  99.      DB     0FEH               ;CONTROL BREAK
  100.      ORG     EX_KEY+132
  101. ; **********************************************************************
  102. ; *                 PUBLIC FIELDS                   *
  103. ; **********************************************************************
  104.      PUBLIC  MAX_HD,MAX_CYL,MAX_SEC,CUR_HD,CUR_CYL,CUR_SEC
  105.      PUBLIC  DR,NUM_DR,ERR_CNT,FMT_BUFF,BROW,BCOL,BHEIGHT
  106.      PUBLIC  BWIDTH,BATTR,BCHAR,INL_TBL,HD_CMD,NUM_SEC,ERR_CODE
  107.      PUBLIC  DIAG_BUF,DATA_BUF,P_STAT,ALL_SW,BAD_SEC,FUNC
  108.      PUBLIC  RW_X,HS_X,SEEK_X,ECC_X,PCT
  109. ; **********************************************************************
  110. ; *                 WORKAREAS                       *
  111. ; **********************************************************************
  112. W16     DW     16
  113. B16     DB     16
  114. B10     DB     10
  115. MAX_HD     DB     0               ;MAX HEADS
  116. MAX_CYL  DW     0               ;MAX CYLINDERS
  117. MAX_SEC  DB     17               ;MAX SECTORS
  118. CUR_HD     DB     0               ;CURRENT HEAD
  119. CUR_CYL  DW     0               ;CURRENT CYLINDER
  120. CUR_SEC  DB     0               ;CURRENT SECTOR
  121. B_CYL     DW     0               ;LAST BAD SECTOR CYL
  122. B_HD     DB     0               ;LAST BAD SECTOR HEAD
  123. NUM_SEC  DB     0               ;NUMBER OF SECTORS
  124. HD_CMD     DB     0               ;HARD DISK COMMAND
  125. DR     DB     0               ;DRIVE NUMBER
  126. ERR_CODE DB     0               ;SAVED ERROR CODE
  127. FUNC     DB     0               ;FUNC CODE
  128. NUM_DR     DB     0               ;NUMBER OF INSTALLED DRIVES
  129. SNUM_DR  DB     0               ;SAVED NUMBER OF INSTALLED DRIVES
  130. ERR_CNT  DW     0               ;ERROR COUNT
  131. RW_X     DB     0               ;READ/WRITE/VERIFY FLAG
  132. HS_X     DB     0               ;HEAD SELECT FLAG
  133. SEEK_X     DB     0               ;SEEK FLAG
  134. ECC_X     DB     0               ;ECC FLAG
  135. PC_TYPE  LABEL     DWORD
  136.      DW     000EH,0FFFFH           ;LOCATION OF PC TYPE
  137. AT     EQU     0FCH               ;IBM AT
  138. PCT     DB     0               ;TYPE OF PC
  139. DWORK     DB     16 DUP(0)           ;WORK AREA
  140. CUR_DIAG DW     0               ;CURRENT DIAGNOSTIC
  141. SAVE_SP  DW     0               ;SAVED STACK POINTER
  142. P_STAT     DB     0FFH               ;PRINTER STATUS
  143. ALL_SW     DB     00H               ;RUN ALL TESTS SWITCH
  144. BAD_SEC  DW     0               ;BAD SECTOR COUNT
  145. ; **********************************************************************
  146. ; *                BOX PARAMETERS                   *
  147. ; **********************************************************************
  148. BROW     DB     0               ;STARTING ROW
  149. BCOL     DB     0               ;STARTING COLUMN
  150. BHEIGHT  DB     0               ;HIGHT
  151. BWIDTH     DB     0               ;WIDTH
  152. BATTR     DB     0               ;ATTRIBUTE
  153. BCHAR     DB     0               ;CHARACTER TO WRITE
  154. ; **********************************************************************
  155. ; *               INTERLEAVE TABLE                   *
  156. ; **********************************************************************
  157. INL_TBL  LABEL     BYTE
  158. INT_1     DB     1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
  159. INT_2     DB     1,10,2,11,3,12,4,13,5,14,6,15,7,16,8,17,9
  160. INT_3     DB     1,7,13,2,8,14,3,9,15,4,10,16,5,11,17,6,12
  161. INT_4     DB     1,14,10,6,2,15,11,7,3,16,12,8,4,17,13,9,5
  162. INT_5     DB     1,8,15,5,12,2,9,16,6,13,3,10,17,7,14,4,11
  163. INT_6     DB     1,4,7,10,13,16,2,5,8,11,14,17,3,6,9,12,15
  164. INT_7     DB     1,6,11,16,4,9,14,2,7,12,17,5,10,15,3,8,13
  165. INT_8     DB     1,16,14,12,10,8,6,4,2,17,15,13,11,9,7,5,3
  166. ; **********************************************************************
  167. ; *                                       *
  168. ; *                  MAIN SCREEN                   *
  169. ; *                                       *
  170. ; **********************************************************************
  171.   SFIELD A00,A01,,@LABEL,RV,05,20,'TESTS THAT WILL NOT DESTROY USER DATA'
  172.   SFIELD A01,A02,,@LABEL,LO,07,24,'F1.......WRITE/READ/VERIFY TEST'
  173.   SFIELD A02,A03,,@LABEL,LO,08,24,'F2.......SEEK TEST'
  174.   SFIELD A03,A04,,@LABEL,LO,09,24,'F3.......HEAD SELECT TEST'
  175.   SFIELD A04,A05,,@LABEL,LO,10,24,'F4.......ECC TEST'
  176.   SFIELD A05,A06,,@LABEL,LO,11,24,'F5.......RUN ALL TESTS'
  177.   SFIELD A06,A07,,@LABEL,LO,12,24,'F6.......PREPARE FOR RELOCATION'
  178.   SFIELD A07,A08,,@LABEL,LO,13,24,'F7.......DEFECT SCAN'
  179.   SFIELD A08,A09,,@LABEL,RV,15,22,'TESTS THAT WILL DESTROY USER DATA'
  180.   SFIELD A09,A10,,@LABEL,LO,17,24,'F8.......SURFACE ANALYSIS'
  181.   SFIELD A10,A11,,@LABEL,LO,18,24,'F9.......FORMAT DISK'
  182.   SFIELD A11,A12,,@LABEL,LO,19,24,'F10......FLAG DEFECTS'
  183.   SFIELD A12,A13,,@LABEL,LO,20,24,'A-F1.....FORMAT TRACK'
  184.   SFIELD A13,A14,,@LABEL,LO,22,24,'A-F9.....TOGGLE PRINTER ON/OFF'
  185.   SFIELD A14,A00,,@LABEL,LO,23,24,'A-F10....EXIT'
  186. ;
  187.   SFIELD D00,D00,,@EX,LO,24,81,' '    ;DUMMY INPUT
  188. ;
  189.   SFIELD P00,P00,,@LABEL,RV,03,33,'PRINTER ON'
  190.   SFIELD P01,P01,,@LABEL,RV,03,33,'PRINTER OFF'
  191. ; **********************************************************************
  192. ; *                 ERROR CODE TABLE                   *
  193. ; ******************************************